package demo2;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

/**
 * Spring 容器要求被管理的类需要使用注解标注
 * 最基础的注解:@Component
 * 以下注解的类同样受到Spring容器管理，他们都在Spring框架中赋予了其他功能
 *
 * @Repository
 *     @Service
 *     @Controller
 *
 *
 * @PropertySource注解告知Spring容器这个类需要使用一个properties配置文件
 * 常用格式classpath:xxxx
 * classpath用于告知从类加载路径开始寻找指定文件
 *
 * 类加载路径：
 * Maven项目中，类加载路径就是target/classes目录
 * 因为Maven项目编译后，项目中所有类文件包括包结构都会被存放到target/classes下
 * 犹豫JVM只读取.class文件，因此jvm运行我们的项目中的类时是从target/classes
 * 出开始寻找的。因此这个目录成为类加载路径（是由Maven项目配置的）
 *
 * Maven项目中有一个结构要求
 */
@Component
@PropertySource("classpath:config.properties")
public class User {
    @Value(("${demo.user.name}"))
    //@Value("张三")
    private String name;
    @Value("${demo.user.age}")
   // @Value("20")
    private int age;

    public String getName() {
        return name;
    }
//@Value("李四")
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }
//@Value("18")
    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
